$(function(){
	
	//构建角色列表
	$("#gridUser").datagrid({
	    height: 'auto',
	    url: "../user/listData?random="+Math.random(),
	    method: 'get',
	    loadMsg: "数据加载中...",
	    pagination:true,
	    pageSize: 19,//每页显示的记录条数，默认为10
	    pageList:[19,20,30],//每页显示几条记录
	    singleSelect:true,
	    toolbar:"#tbUser"
	});
	
	//构建角色选择框
	createRoles();

});

//扩展验证方法
$.extend($.fn.validatebox.defaults.rules, {
    equalTo: { 
    	validator: function (value, param) { 
    		return $(param[0]).val() == value; 
    		}, 
    	message: '两次密码输入不一致' 
    },
    userNameValidity:{
    	validator: function (value) { 
    		return /^[a-zA-Z0-9_]{3,16}$/i.test(value);
    		}, 
    	message: '用户名不合法（字母开头，允许3-16字节，允许字母数字下划线）'
    },
    userNameUnused:{
    	validator: function (value) { 
    		var checkR=$.ajax({
                async : false,  
                cache : true,
                type : 'post',  
                url : '../user/exist',  
                data : {  
                    'username' : value,
                    'userNameOld':function(){return $("#txtUserNameOld").val();}
                } 
            }).responseText;  
    		return checkR==="false"; 
    		}, 
    	message: '该用户名已经被使用'
    }
});

//构建角色选择框
function createRoles()
{
	$.ajax({
        async : false,  
        cache : true,
        type : 'post',  
        url : '../role/all',
        success:function(data){
        	var chkRoleStr="";
        	for(var i=0;i<data.length;i++)
        	{
        		var role=data[i];
        		
        		chkRoleStr+="<input type='checkbox' name='roleCheck' value='"+role.id+"'>"+role.roleName+"<br/>";
        		
        	}
        	$("#divRolesCheck").html(chkRoleStr);
        }
    });
}

/**构建用户状态列
 * val: the field value，也就是field:'id'。
 * row: the row record data。就是这一行的Json数据，包括你已经选择在Datagrid上显示的内容，和没显示的内容。
 * index:索引号
 * @returns 状态中文名
 */
function stateColumn(val,row,index)
{
	var userState="";
	switch(Number(val))
	{
	case 0:
		userState="启用";
		break;
	case 1:
		userState="停用";
		break;
	case 2:
		userState="未激活";
		break;
	}
	return userState;
}

/**
 * 构建操作列
 * val: the field value，也就是field:'id'。
 * row: the row record data。就是这一行的Json数据，包括你已经选择在Datagrid上显示的内容，和没显示的内容。
 * index:索引号
 */
function optColumn(val,row,index)
{
	var stateName=row.state==0?"停用":"启用";
	var optStr="<a href='javascript:void(0)' onclick='javascript:delUser("+val+",\""+row.userName+"\")' style='color:blue'><u>删除</u></a>";
	optStr+="&nbsp;";
	optStr+="<a href='javascript:void(0)' onclick='javascript:editUserState("+val+","+row.state+",\""+row.userName+"\")' style='color:blue'><u>"+stateName+"</u></a>";
	optStr+="&nbsp;";
	optStr+="<a href='javascript:void(0)' onclick='javascript:dlgUserOpenEdit("+val+","+index+")' style='color:blue'><u>编辑</u></a>";
	return optStr;
}

//条件查询
function searchUser()
{
	var userName=$("#txtSearchUserName").textbox("getValue");
	
	$('#gridUser').datagrid('load',{
		userName:userName
	});
}

/**
 * 删除用户
 * @param userId 用户ID
 * @param userName 用户名
 */
function delUser(userId,userName)
{
	$.messager.confirm("提示", "是否删除用户【"+userName+"】？", function(r){
		if (r){
			$.ajax({
				type: "get",
				url: "../user/delete",
				data:{
					userId:userId
				},
				success: function(data){
					if(data.result==true)
					{
						$("#gridUser").datagrid("load",{data:{random:function(){return Math.random();}}});
					}
					else
		            {
		            	$.messager.alert("提示",data.msg,"error");
		            }
				},
				error:function(err){
					$.messager.alert("提示",err.responseText,null,function(){
						window.location.href="../login/toLogin";
					});
				}
			});
		}
	});
}

/**
 * 修改用户状态
 * @param userId
 * @param state
 * @param userName
 */
function editUserState(userId,state,userName)
{
	
	var stateName=state==0?"停用":"启用";
	var stateE=state==0?1:0;
	
	$.messager.confirm("提示", "是否<font color='red'><b>"+stateName+"</b></font>用户【"+userName+"】？", function(r){
		if (r){
			$.ajax({
				type: "get",
				url: "../user/editState",
				data:{
					userId:userId,
					state:stateE
				},
				success: function(data){
					if(data.result==true)
					{
						$("#gridUser").datagrid("load",{data:{random:function(){return Math.random();}}});
					}
					else
		            {
		            	$.messager.alert("提示",data.msg,"error");
		            }
				},
				error:function(err){
					$.messager.alert("提示",err.responseText,null,function(){
						window.location.href="../login/toLogin";
					});
				}
			});
		}
	});
}

//清空表单
function clearUserFrom()
{
	$('#frmUser').form('clear');
}

//打开人员编辑对话框
function dlgUserOpen()
{
	$("#dlgUser").window('open');
}

//打开新增用户对话框
function dlgUserOpenAdd()
{
	$('#txtPassword').textbox({ required: true });  
	$('#repassword').textbox({ required: true }); 
	$("#txtOpType").val("add");
	clearUserFrom();

	var date = new Date();      
	dateNow=date.format("yyyy-MM-dd hh:mm:ss");
	$("#txtStartDate").datetimebox("setValue",dateNow);
	$("#txtEndDate").datetimebox("setValue","2099-12-31 23:59:59");
	
	dlgUserOpen();
}

//取消人员编辑
function dlgUserCancel()
{
	$("#dlgUser").window('close');
	clearUserFrom();
}

//新增用户提交
function addUserSubmit()
{
	var strRoleIds="";//用户绑定的角色
	$("input[name='roleCheck']:checked").each(function(obj){
		if(strRoleIds!="") 
		{
			strRoleIds+=",";
		}
		strRoleIds+=$(this).val();
	}); 
	
	if(strRoleIds=="")
	{
		$.messager.alert("警告","请选择用户角色","warning");
		return false;
	}
	
	$("#txtRoleIds").val(strRoleIds);
	
	$('#frmUser').form('submit',{  
        url:'../user/add',  
        onSubmit:function(){
            return $(this).form('validate');
        },  
        success:function(jsonstr){
        	var data=JSON.parse(jsonstr); 
            if(data.result==true)
            {
            	//提交成功处理
            	dlgUserCancel();
            	$("#gridUser").datagrid("load",{data:{random:function(){return Math.random();}}});
            	$.messager.alert("提示",data.msg);
            }
            else
            {
            	$.messager.alert("提示",data.msg,"error");
            }
        }
    }); 
}

//修改用户提交
function editUserSubmit()
{
	var strRoleIds="";//用户绑定的角色
	$("input[name='roleCheck']:checked").each(function(obj){
		if(strRoleIds!="") 
		{
			strRoleIds+=",";
		}
		strRoleIds+=$(this).val();
	}); 
	
	if(strRoleIds=="")
	{
		$.messager.alert("警告","请选择用户角色","warning");
		return false;
	}
	$("#txtRoleIds").val(strRoleIds);
	
	$('#frmUser').form('submit',{  
        url:'../user/edit',  
        onSubmit:function(){
            return $(this).form('validate');
        },  
        success:function(jsonstr){
        	var data=JSON.parse(jsonstr); 
            if(data.result==true)
            {
            	//提交成功处理
            	dlgUserCancel();
            	$("#gridUser").datagrid("load",{data:{random:function(){return Math.random();}}});
            	$.messager.alert("提示",data.msg);
            }
            else
            {
            	$.messager.alert("提示",data.msg,"error");
            }
        }
    }); 
}

/**
 * 打开修改用户对话框
 * @param userId:用户ID
 * @param rowIndex:表格索引号
 */
function dlgUserOpenEdit(userId,rowIndex)
{
	$('#txtPassword').textbox({ required: false });  
	$('#repassword').textbox({ required: false }); 
	$("#txtOpType").val("edit");
	clearUserFrom();
	
	$('#gridUser').datagrid('selectRow',rowIndex);
	var user=$('#gridUser').datagrid('getSelected');	
	
	var userId=user.id;
	$("#txtUserId").val(userId);
	$("#txtUserNameOld").val(user.userName);
	
	$("#txtUserName").textbox("setValue",user.userName);
	$("#txtNickname").textbox("setValue",user.nickname);
	$("#txtStartDate").textbox("setValue",user.createDate);
	$("#txtEndDate").textbox("setValue",user.endDate);
	$("#txtLocationName").textbox("setValue",user.locationName);
	$("#txtLocationId").val(user.locationId);
	
	
	//取消所有角色选中状态
	$("input[name='roleCheck']").each(function(){
		$(this).attr("checked",false);;
	});

	//从后台获取用户觉有的角色，设置页面相应角色处于选中状态
	$.ajax({
		type: "get",
		url: "../user/userRoleList?random="+Math.random(),
		data:{
			userId:userId
		},
		success: function(data){
			
			if(null!=data)
			{
				for(var n=0;n<data.length;n++)
				{
					var userRole=data[n];
					var roleId=userRole.roleId;
					$("input[name='roleCheck']").each(function(){
						var role=$(this);
						if(role.val()==roleId)
						{
							//用户绑定的角色设置选中状态
							role.prop("checked", true);
						}
					});
				}
			}
		}
	});
	
	dlgUserOpen();
}

//提交表单
function submitForm()
{
	var opType=$("#txtOpType").val();
	//新增
	if(opType=="add")
	{
		addUserSubmit();
	}
	
	//修改
	if(opType=="edit")
	{
		editUserSubmit();
	}
}
